// src/utils/ase.js
import CryptoJS from 'crypto-js';

// 获取 ase_key（建议全局存储）
export function getAseKey() {
    return localStorage.getItem('ase_key') || '8Fz4N3d8S92aF4kH6v9Yb3D2c4V6x8W1';
}

// 生成 Authorization 签名
export function generateAuthorization() {
    const key = CryptoJS.enc.Utf8.parse(getAseKey());
    const timestamp = Math.floor(Date.now() / 1000);
    const message = `timestamp=${timestamp}000`;
    
    // 先对消息进行 base64 编码，与 Go 端保持一致
    const base64Message = CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(message));
    
    // 生成随机 IV
    const iv = CryptoJS.lib.WordArray.random(16);
    
    // CFB 模式加密，与 Go 端保持一致
    const encrypted = CryptoJS.AES.encrypt(
        CryptoJS.enc.Utf8.parse(base64Message),
        key,
        {
            iv: iv,
            mode: CryptoJS.mode.CFB,
            padding: CryptoJS.pad.NoPadding
        }
    );
    
    // 拼接 IV 和密文，然后进行 base64 编码
    const ivAndCipher = iv.concat(encrypted.ciphertext);
    const authorization = CryptoJS.enc.Base64.stringify(ivAndCipher);
    return { timestamp, authorization };
}